//----------
//分析数据控制参数
TString fName("Run6"); //./DESY-BeamTest/RUN**/Combine/Combined-dst.root
int processControl = 1; //1: 用hitmapReal的直方图去做Offset，运行几遍直到输出的offset不怎么变化，同时检查二维直方图，确保束流信号在0，0位置，！！！需要手动更新offset数据！！！
                        //2: 用T02/T03去看其他tracker，然后更新offset。运行几遍直到输出的offset不怎么变化，同时检查残差分布图， ！！！需要手动更新offset数据！！！
                        //3: 看RICH的hitmap及其他相关的分布, 这里会cut选择束流击中位置，从而来做RICH的offset修正，因此需要调整一下在IsRICHClusterEffective里的参数，并运行几遍 ！！！需要手动更新offset数据！！！
                        //4: 修正完后再看RICH的分布，此时不做任何cut，用来检查原始数据过offset修正后是否正常
                        //5: RICH的offset的残差分布，和3一样，也会cut选择束流击中位置，多运行几遍 ！！！需要手动更新offset数据！！！
                        //6: 修正完后再看RICH的分布，此时对cluster进行cut
                        //7: 重建光子
                        //8: 用GBL重建径迹

//这里的offset是探测器坐标系的零点，在束流实验系下的坐标位置。
//束流实验系是束流为0点，方向为z，向上为y，向东为x
//实验记录上的角度是和探测器表面的法线的夹角！！！
vector<vector<double>> offset = {
    {63, -16.92, -5.609, -4.664, 3.735, 0, 0}, // X
    {63, 24.6, -9.753, -9.218, -6.235, 0, 0},  // Y
    {63, 375, 0, 97, 875, 0, 0},               // Z
    {63, 45},                                  // angle

    {65, 0, 6.796, 7.72, 17.33, 0, 0}, // X
    {65, 0, 7.08, 8.197, 14.76, 0, 0}, // Y
    {65, 375, 0, 97, 875, 0, 0},       // Z
    {65, 45},                          // angle

    //固定RICH高压，扫描其角度
    {74, -18.55, -0.5365, -0.8039, -11.33, 0, 0}, // X
    {74, 16.66, 1.14, 0.748, -3.765, 0, 0},       // Y
    {74, 375, 0, 97, 875, 0, 0},                  // Z
    {74, 50},                                     // angle

    {75, -14.34, -0.9095, -1.016, -1.741, 0, -4.285}, // X
    {75, 18.44, 0.7583, 0.5443, -1.972, 0, 0.4204},   // Y
    {75, 375, 0, 97, 875, 565, 767},                  // Z
    {75, 45},                                         // angle

    {76, -13.49, -0.6587, -0.5079, -7.621, 0, 0}, // X
    {76, 19.58, 0.837, 0.6431, -2.348, 0, 0},     // Y
    {76, 375, 0, 97, 875, 0, 0},                  // Z
    {76, 40},                                     // angle

    {77, -16.52, -0.8217, -0.5918, -7.118, 0, 0}, // X
    {77, 15.46, 0.8639, -0.0408, -8.745, 0, 0},   // Y
    {77, 375, 0, 97, 875, 0, 0},                  // Z
    {77, 40},                                     // angle

    {78, -17.74, -0.7801, -0.8111, -9.412, 0, 0}, // X
    {78, 17.26, 0.9024, 0.3718, -5.336, 0, 0},    // Y
    {78, 375, 0, 97, 875, 0, 0},                  // Z
    {78, 35},                                     // angle

    {79, -14.8, -1.082, -0.2984, -2.373, 0, 0}, // X
    {79, 30.89, 0.9325, 0.06231, -8.375, 0, 0}, // Y
    {79, 375, 0, 97, 875, 0, 0},                // Z
    {79, 30},                                   // angle

    {80, -15.36, -0.2909, 0.2295, -4.041, 0, 0}, // X
    {80, 28.21, 1.188, -0.2327, -13.15, 0, 0},   // Y
    {80, 375, 0, 97, 875, 0, 0},                 // Z
    {80, 30},                                    // angle

    //将MM电压调到可耐受的最大值，看光子探测效率和增益
    {86, -14.21, 0.203, 0.86, -2.287, -1.575, -0.4952}, // X
    {86, 31.6, 0.195, -0.2778, -5.591, -11.05, -0.7934}, // Y
    {86, 375, 0, 97, 875, 565, 767},          // Z
    {86, 30},                                 // angle

    //只有Tracker，且将原来T03电子学换到T05上了。所以这里的T03的Z坐标是T05的位置，数据也是T05探测器测得的
    {99, 0, 5.963, 5.674, 6.158, 0, 0},    // X
    {99, 0, 0.4851, -1.334, -2.054, 0, 0}, // Y
    {99, 0, 0, 767, 875, 0, 0},            // Z
    {99, 45},                              // angle

    {999, 0, 0, 0, 0, 0, 0},      //X
    {999, 0, 0, 0, 0, 0, 0},      //Y
    {999, 375, 0, 97, 875, 0, 0}, //Z
    {999, 45}                     //angle
};

const int NDET = 6;
double Xoff[NDET] = {0, 0, 0, 0, 0, 0};
double Yoff[NDET] = {0, 0, 0, 0, 0, 0};
double Zpos[NDET] = {375, 0, 97, 875, 565, 767};
double angle = 45;

long DSTEntries = 10000;                  //设置为小于100的数，就跑DSTEntries个事例，设置为大与100的数，就跑数据里的所有数据。
int verbose = (DSTEntries < 100) ? 1 : 0; //输出信息后可以在mathematicas里检查
